package cn.edu.cug.cs.gtl.apis.render.paths;

import cn.edu.cug.cs.gtl.apis.render.NativeObjectWrapper;
import cn.edu.cug.cs.gtl.apis.render.nodes.BaseKit;
import cn.edu.cug.cs.gtl.apis.render.nodes.Node;

public interface NodeKitPath extends NativeObjectWrapper {
    void	append(BaseKit childKit);
    //Adds childKit to end of chain.
    void	append(Path fromPath);
    //Adds all nodekits in fromPath's chain to end of chain.
    boolean	containsNode(BaseKit nodekit);
    //Returns true if the nodekit is found anywhere in the path chain.
    boolean	containsPath(Path path);
    //Returns true if the nodes in the given path argument are contained (in consecutive order) in this path.
    int	findFork(Path path);
    //If the two paths have different head nodes, this returns -1.
    Node getHead();
    //Return the first node in a path chain
    int	getLength();
    //Returns length of path chain (number of nodekits).
    Node	getNode(int i);
    //Return the i'th nodekit in the chain.
    Node	getNodeFromTail(int i);
    //Return the i'th nodekit in the chain, counting backward from the tail node.
    Node	getTail();
    //Return the last nodekit in a path chain.
    void	pop();
    //Pop the last nodekit off the end of the path.
    void	setHead(Node node);
    //Sets head node (first node in chain).
    void	truncate(int start);
    //Truncates the path chain, removing all nodes from index start on.
}
